﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;

namespace Example
{

    /// <summary>
    /// Clase que se encarga de hacer el registro (Se comunica con la FachadaBdd) mediante sentencias MySQl
    /// </summary>
    class UsuarioDAO
    {
        /// <summary>
        /// Constructor vacio de UsuarioDAO
        /// </summary>
        public UsuarioDAO()
        {
        }

        /// <summary>
        /// Método que se encarga de hacer el registro
        /// </summary>
        /// <param name="avatar">Avatar que eligio el usuario</param>
        /// <param name="descripcion">Descripción del usuario</param>
        /// <param name="email">Email del usuario</param>
        /// <param name="nombre">Nombre del usuario</param>
        /// <param name="password">Contraseña del usuario</param>
        /// <returns>Devuelve True si el registro se hizo de forma correcta, False en caso contrario</returns>
        public Boolean registro(String nombre, String password, byte[] avatar, String email, String descripcion)
        {

            FachadaBdd fach = new FachadaBdd("208.11.220.249", "quienesquien", "whoiswho", "quienesquien");

            MySqlConnection con = fach.conectar();

            /*Comprobamos si el usuario existe*/
            MySqlDataReader read = fach.select("SELECT idusuario FROM usuarios WHERE nombre = '" + nombre+"'");
            //Si devuelve resultado
            if (read.Read())
            {
                fach.desconectar();
                return false;

            }
            //No existe el usuario, lo insertamos
            else
            {
                read.Close();

                /* Si queremos insertar imagenes en la base de datos tenemos que hacerlo asi, no nos vale el update de la fachada */

                MySqlDataAdapter da = new MySqlDataAdapter("Select * From usuarios", con);
                MySqlCommandBuilder MyCB = new MySqlCommandBuilder(da);
                DataSet ds = new DataSet("usuarios");
                da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                da.Fill(ds, "usuarios");
                DataRow myRow;
                myRow = ds.Tables["usuarios"].NewRow();
                myRow["nombre"] = nombre;
                myRow["password"] = password;
                myRow["email"] = email;
                myRow["descripcion"] = descripcion;
                myRow["avatar"] = avatar;
                myRow["puntos"] = 0;
                ds.Tables["usuarios"].Rows.Add(myRow);
                da.Update(ds, "usuarios");

                //fach.update("INSERT INTO usuarios (nombre, password, email, descripcion, avatar) VALUES ('" + nombre + "','" + password + "','" + email + "','" + descripcion + "','" + avatar +"')");
                fach.desconectar();
                return true;
            }
            
        }


        /// <summary>
        /// Método que obtiene los atributos o características de un usuario
        /// </summary>
        /// <param name="nombre">A partir de su nombre que es el identificador</param>
        public DataRow obtener_atributos(String nombre)
        {

            FachadaBdd fach = new FachadaBdd("208.11.220.249", "quienesquien", "whoiswho", "quienesquien");

            MySqlConnection con = fach.conectar();
            MySqlDataAdapter da = new MySqlDataAdapter("Select * From usuarios WHERE nombre = '" + nombre + "'", con);
            MySqlCommandBuilder MyCB = new MySqlCommandBuilder(da);
            DataSet ds = new DataSet("usuarios");

            byte[] MyData = new byte[0];
            da.Fill(ds, "usuarios");
            DataRow myRow;
            myRow = ds.Tables["usuarios"].Rows[0];
            return myRow;
        }
    }
}
